トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     AS3.0で、クラスからオーサリン時に配置したインスタンスを参照したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
RK_Flash
Åê¹ÆNo.41437
投稿日時: 2009-2-9 12:55
新米
居住地:
投稿: 7
使用環境:
----------------
使用環境
WinXP Pro SP2
Pro8.0
ProCS3
FlashPlayer 9,0,124,0(FireFox2)
AS3.0で、クラスからオーサリン時に配置したインスタンスを参照したい
こんにちわ。
非常に初歩的な質問ですが、
AS3.0にて、外部asファイルで作成したクラスから、
オーサリング時に配置したインスタンスを
参照する方法を教えてください。

【環境】--------------------------------
・WinXP Pro SP2
・Flash CS3(パブリッシュはAS3.0)
----------------------------------------

以下のテストで、外部asファイルで定義したクラスから
ステージ上の「textText」「testMC」を参照したいのですが、
「1120: 未定義のプロパティ testText へのアクセスです。」
「1120: 未定義のプロパティ testMC へのアクセスです。」
とコンパイルエラーになります。


■テスト内容

外部asファイル「test.as」を作成。
package  {
 	import flash.display.*;
	public class test extends MovieClip
	{
		public function func():void
 		{
 			trace(testText);
 			trace(testMC);
 		}
 	}
 }

test.asと同階層に新規で「testfla.fla」を作成。
1フレーム目に、以下のフレームスクリプトを記述。
var obj:test= new test();
obj.func();

1フレーム目のステージ上に、ムービークリップを1つ配置。
インスタンス名に「testMC」とつける。
テキストフィールド(ダイナミックテキスト)を1つ配置。
インスタンス名に「testText」とつける。


そしてパブリッシュすると、上記エラーがでます。

通常、クラス内でステージ上のインスタンスは参照しないのでしょうか?
間違っているところをご指摘いただけるとありがたいです。
野中文雄
Åê¹ÆNo.41440
投稿日時: 2009-2-9 13:43
ちょんまげら
居住地: 東京
投稿: 4247
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: AS3.0で、クラスからオーサリン時に配置したインスタンスを参照したい
ActionScript 3.0では、Stageオブジェクトを頂点とした表示リスト内の(平たくいえばステージ上に登場している)インスタンスを参照するには、そのターゲットパスを指定する必要があります。

しかし、この表示リスト内に加わっていないインスタンスからは、DisplayObject.rootDisplayObject.parentプロパティなどを用いてステージ上のインスタンスのパスが指定できません。したがって、パスが指定できるように、(メイン)タイムラインの参照をクラスに渡すべきでしょう。
引用:
RK_Flashさんは書きました:
以下のテストで、外部asファイルで定義したクラスから
ステージ上の「textText」「testMC」を参照したいのですが、
「1120: 未定義のプロパティ testText へのアクセスです。」
「1120: 未定義のプロパティ testMC へのアクセスです。」
とコンパイルエラーになります。

■テスト内容

外部asファイル「test.as」を作成。
package {
	import flash.display.*;
	public class test extends MovieClip {
		private var timeline_mc:MovieClip;
		public function test(target_mc:MovieClip) {
			timeline_mc = target_mc;
		}
		public function func():void {
			// trace(testText);
			// trace(testMC);
			trace(timeline_mc.testText, timeline_mc.testMC);
		}
	}
}

test.asと同階層に新規で「testfla.fla」を作成。
1フレーム目に、以下のフレームスクリプトを記述。
// var obj:test= new test();
var obj:test= new test(this);
obj.func();

1フレーム目のステージ上に、ムービークリップを1つ配置。
インスタンス名に「testMC」とつける。
テキストフィールド(ダイナミックテキスト)を1つ配置。
インスタンス名に「testText」とつける。


----------------
 

RK_Flash
Åê¹ÆNo.41442
投稿日時: 2009-2-9 18:55
新米
居住地:
投稿: 7
使用環境:
----------------
使用環境
WinXP Pro SP2
Pro8.0
ProCS3
FlashPlayer 9,0,124,0(FireFox2)
Re: AS3.0で、クラスからオーサリン時に配置したインスタンスを参照したい
野中様

早速のご回答ありがとうございます!
ご説明もすごくわかりやすくて、どうすれば良いのか理解できました。
コードも添削していただいて嬉しいです!
どうもありがとうございました!AS3化がんばります!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops